/*
 * Copyright (c) 2010 Shanda Corporation. All rights reserved.
 *
 * Created on 2011-2-23.
 */

package com.whq.thrift.api.common.spring;

import java.util.Locale;

import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;

/**
 * 
 * 动态读取配置文件信息
 * 
 * @author wanghuaiqiang
 */
public class ReloadableConfManager implements ApplicationContextAware {

	private ApplicationContext ctx;

	/**
	 * <b>Description:</b><br/>
	 * 根据国家语言获得对应的配置信息，当然一些 项目的配置信息也可以使用这个类获取，如果没有国家，语言，默认传null也可以</p>
	 * 
	 * @param propertyName
	 * @param locale
	 * @return
	 */
	public String getPropertyValue(String propertyName, Locale locale) {
		String value = ctx.getMessage(propertyName, null, locale);
		return (value == null) ? "" : value.trim();
	}

	/**
	 * <b>Description:</b><br/>
	 * 根据国家语言获得对应的配置信息，当然一些
	 * 项目的配置信息也可以使用这个类获取，如果没有国家，语言，默认传null也可以,如果没有配置使用默认值</p>
	 * 
	 * @param propertyName
	 * @param locale
	 * @param defaultValue
	 * @return
	 */
	public String getPropertyValue(String propertyName, Locale locale, String defaultValue) {
		String value = ctx.getMessage(propertyName, null, locale);
		return ( (value == null) || ("".equals(value.trim())) ) ? defaultValue : value.trim();
	}
	
	public int getIntPropertyValue(String propertyName, Locale locale, int defaultValue){
        String value = ctx.getMessage(propertyName, null, locale);
        if ( (value == null) || ("".equals(value.trim())) ) {
        	return defaultValue;
        }
        
        value = value.trim();
        try {
        	return Integer.valueOf(value);
        } catch (Exception e) {
        	
        }
        return defaultValue;
    }
    
    public long getLongPropertyValue(String propertyName, Locale locale, long defaultValue){
        String value = ctx.getMessage(propertyName, null, locale);
        if ( (value == null) || ("".equals(value.trim())) ) {
        	return defaultValue;
        }
        
        value = value.trim();
        try {
        	return Long.valueOf(value);
        } catch (Exception e) {
        	
        }
        return defaultValue;
    }

	public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
		this.ctx = applicationContext;
	}
}
